﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.Serialization;
using System.ComponentModel;

namespace ViCode_LeVi.Data
{   
    [DataContract]
    public class Step_BalanceAndOthers_PROFIT_LOSS_STATEMENT : INotifyPropertyChanged
    {
        public Step_BalanceAndOthers_PROFIT_LOSS_STATEMENT()
        {
            if (Items == null)
                Items = new List<Step_BalanceAndOthers_PROFIT_LOSS_STATEMENT_Item>();
        }
        #region INotifyPropertyChanged Members
        public void SendPropertyChanged(string sProp)
        {
            if (PropertyChanged != null)
                PropertyChanged(this, new PropertyChangedEventArgs(sProp));
        }
        public event PropertyChangedEventHandler PropertyChanged;
        #endregion

        public string CompanyName { get { return ProjectData.Intance.CompanyName; } }
        #region UI
        #region Step_BalanceAndOthers_PROFIT_LOSS_STATEMENT_Header
        [DataMember]
        string _Step_BalanceAndOthers_PROFIT_LOSS_STATEMENT_Header = string.Empty;
        public string Step_BalanceAndOthers_PROFIT_LOSS_STATEMENT_Header
        {
            get
            {
                if (string.IsNullOrEmpty(_Step_BalanceAndOthers_PROFIT_LOSS_STATEMENT_Header))
                {
                    _Step_BalanceAndOthers_PROFIT_LOSS_STATEMENT_Header = "Profit and loss statment, budget";
                }
                return _Step_BalanceAndOthers_PROFIT_LOSS_STATEMENT_Header;
            }
            set
            {
                if (_Step_BalanceAndOthers_PROFIT_LOSS_STATEMENT_Header != value)
                {
                    _Step_BalanceAndOthers_PROFIT_LOSS_STATEMENT_Header = value;
                    SendPropertyChanged("Step_BalanceAndOthers_PROFIT_LOSS_STATEMENT_Header");
                }
            }
        }
        #endregion

        #region UIText_INCOME
        [DataMember]
        string _UIText_INCOME = string.Empty;
        public string UIText_INCOME
        {
            get
            {
                if (string.IsNullOrEmpty(_UIText_INCOME))
                {
                    _UIText_INCOME = "INCOME:";
                }
                return _UIText_INCOME;
            }
            set
            {
                if (_UIText_INCOME != value)
                {
                    _UIText_INCOME = value;
                    SendPropertyChanged("UIText_INCOME");
                }
            }
        }
        #endregion

        #region UIText_Total_INCOME
        [DataMember]
        string _UIText_Total_INCOME = string.Empty;
        public string UIText_Total_INCOME
        {
            get
            {
                if (string.IsNullOrEmpty(_UIText_Total_INCOME))
                {
                    _UIText_Total_INCOME = "TOTAL INCOME:";
                }
                return _UIText_Total_INCOME;
            }
            set
            {
                if (_UIText_Total_INCOME != value)
                {
                    _UIText_Total_INCOME = value;
                    SendPropertyChanged("UIText_Total_INCOME");
                }
            }
        }
        #endregion

        #region UIText_COSTS 
        [DataMember]
        string _UIText_COSTS  = string.Empty;
        public string UIText_COSTS 
        {
            get
            {
                if (string.IsNullOrEmpty(_UIText_COSTS ))
                {
                    _UIText_COSTS  = "COSTS (raw material):";
                }
                return _UIText_COSTS ;
            }
            set
            {
                if (_UIText_COSTS  != value)
                {
                    _UIText_COSTS  = value;
                    SendPropertyChanged("UIText_COSTS");
                }
            }
        }
        #endregion

        #region UIText_Total_COSTS 
        [DataMember]
        string _UIText_Total_COSTS  = string.Empty;
        public string UIText_Total_COSTS 
        {
            get
            {
                if (string.IsNullOrEmpty(_UIText_Total_COSTS ))
                {
                    _UIText_Total_COSTS  = "TOTAL COSTS:";
                }
                return _UIText_Total_COSTS ;
            }
            set
            {
                if (_UIText_Total_COSTS  != value)
                {
                    _UIText_Total_COSTS  = value;
                    SendPropertyChanged("UIText_Total_COSTS");
                }
            }
        }
        #endregion

        #region UIText_OPERATINGEXPENSES
        [DataMember]
        string _UIText_OPERATINGEXPENSES = string.Empty;
        public string UIText_OPERATINGEXPENSES
        {
            get
            {
                if (string.IsNullOrEmpty(_UIText_OPERATINGEXPENSES))
                {
                    _UIText_OPERATINGEXPENSES = "OPERATING EXPENSES:";
                }
                return _UIText_OPERATINGEXPENSES;
            }
            set
            {
                if (_UIText_OPERATINGEXPENSES != value)
                {
                    _UIText_OPERATINGEXPENSES = value;
                    SendPropertyChanged("UIText_OPERATINGEXPENSES");
                }
            }
        }
        #endregion

        #region UIText_Total_OPERATINGEXPENSES
        [DataMember]
        string _UIText_Total_OPERATINGEXPENSES = string.Empty;
        public string UIText_Total_OPERATINGEXPENSES
        {
            get
            {
                if (string.IsNullOrEmpty(_UIText_Total_OPERATINGEXPENSES))
                {
                    _UIText_Total_OPERATINGEXPENSES = "TOTAL OF OPERATING EXPENSES:";
                }
                return _UIText_Total_OPERATINGEXPENSES;
            }
            set
            {
                if (_UIText_Total_OPERATINGEXPENSES != value)
                {
                    _UIText_Total_OPERATINGEXPENSES = value;
                    SendPropertyChanged("UIText_Total_OPERATINGEXPENSES");
                }
            }
        }
        #endregion
    
        #region UIText_Total_NETPROFITLOSS
        [DataMember]
        string _UIText_Total_NETPROFITLOSS = string.Empty;
        public string UIText_Total_NETPROFITLOSS
        {
            get
            {
                if (string.IsNullOrEmpty(_UIText_Total_NETPROFITLOSS))
                {
                    _UIText_Total_NETPROFITLOSS = "NET PROFIT/LOSS:";
                }
                return _UIText_Total_NETPROFITLOSS;
            }
            set
            {
                if (_UIText_Total_NETPROFITLOSS != value)
                {
                    _UIText_Total_NETPROFITLOSS = value;
                    SendPropertyChanged("UIText_Total_NETPROFITLOSS");
                }
            }
        }
        #endregion

        #region UIText_Total_GROSSPROFIT
        [DataMember]
        string _UIText_Total_GROSSPROFIT = string.Empty;
        public string UIText_Total_GROSSPROFIT
        {
            get
            {
                if (string.IsNullOrEmpty(_UIText_Total_GROSSPROFIT))
                {
                    _UIText_Total_GROSSPROFIT = "GROSS PROFIT:";
                }
                return _UIText_Total_GROSSPROFIT;
            }
            set
            {
                if (_UIText_Total_GROSSPROFIT != value)
                {
                    _UIText_Total_GROSSPROFIT = value;
                    SendPropertyChanged("UIText_Total_GROSSPROFIT");
                }
            }
        }
        #endregion

        #region UIText_Value
        [DataMember]
        string _UIText_Value = string.Empty;
        public string UIText_Value
        {
            get
            {
                if (string.IsNullOrEmpty(_UIText_Value))
                {
                    _UIText_Value = "Value";
                }
                return _UIText_Value;
            }
            set
            {
                if (_UIText_Value != value)
                {
                    _UIText_Value = value;
                    SendPropertyChanged("UIText_Value");
                }
            }
        }
        #endregion

        #region UIText_Year1
        [DataMember]
        string _UIText_Year1 = string.Empty;
        public string UIText_Year1
        {
            get
            {
                if (string.IsNullOrEmpty(_UIText_Year1))
                {
                    _UIText_Year1 = "Year 1";
                }
                return _UIText_Year1;
            }
            set
            {
                if (_UIText_Year1 != value)
                {
                    _UIText_Year1 = value;
                    SendPropertyChanged("UIText_Year1");
                }
            }
        }
        #endregion

        #region UIText_Year2
        [DataMember]
        string _UIText_Year2 = string.Empty;
        public string UIText_Year2
        {
            get
            {
                if (string.IsNullOrEmpty(_UIText_Year2))
                {
                    _UIText_Year2 = "Year 2";
                }
                return _UIText_Year2;
            }
            set
            {
                if (_UIText_Year2 != value)
                {
                    _UIText_Year2 = value;
                    SendPropertyChanged("UIText_Year2");
                }
            }
        }
        #endregion

        #region UIText_Year3
        [DataMember]
        string _UIText_Year3 = string.Empty;
        public string UIText_Year3
        {
            get
            {
                if (string.IsNullOrEmpty(_UIText_Year3))
                {
                    _UIText_Year3 = "Year 3";
                }
                return _UIText_Year3;
            }
            set
            {
                if (_UIText_Year3 != value)
                {
                    _UIText_Year3 = value;
                    SendPropertyChanged("UIText_Year3");
                }
            }
        }
        #endregion

        #region UIText_Year4
        [DataMember]
        string _UIText_Year4 = string.Empty;
        public string UIText_Year4
        {
            get
            {
                if (string.IsNullOrEmpty(_UIText_Year4))
                {
                    _UIText_Year4 = "Year 4";
                }
                return _UIText_Year4;
            }
            set
            {
                if (_UIText_Year4 != value)
                {
                    _UIText_Year4 = value;
                    SendPropertyChanged("UIText_Year4");
                }
            }
        }
        #endregion

        #region UIText_Year5
        [DataMember]
        string _UIText_Year5 = string.Empty;
        public string UIText_Year5
        {
            get
            {
                if (string.IsNullOrEmpty(_UIText_Year5))
                {
                    _UIText_Year5 = "Year 5";
                }
                return _UIText_Year5;
            }
            set
            {
                if (_UIText_Year5 != value)
                {
                    _UIText_Year5 = value;
                    SendPropertyChanged("UIText_Year5");
                }
            }
        }
        #endregion
        #endregion

        #region Data
        public void RefreshData()
        {
            if (Items == null)
                Items = new List<Step_BalanceAndOthers_PROFIT_LOSS_STATEMENT_Item>();
            var _items = Items;
            foreach (var item in _items)
            {
                if (item != null)
                {
                    if (item.Parent != this)
                        item.Parent = this;
                }
            }
        }
        [DataMember]
        public List<Step_BalanceAndOthers_PROFIT_LOSS_STATEMENT_Item> Items { get; set; }
        public Step_BalanceAndOthers_PROFIT_LOSS_STATEMENT_Item[] Items_INCOME
        {
            get
            {
                return Items == null ? new Step_BalanceAndOthers_PROFIT_LOSS_STATEMENT_Item[0] : Items.Where(c => c.GroupName == GROUP_INCOME).ToArray();
            }
            set { }
        }
        public Step_BalanceAndOthers_PROFIT_LOSS_STATEMENT_Item[] Items_COSTS 
        {
            get
            {
                return Items == null ? new Step_BalanceAndOthers_PROFIT_LOSS_STATEMENT_Item[0] : Items.Where(c => c.GroupName == GROUP_COSTS ).ToArray();
            }
            set { }
        }
        public Step_BalanceAndOthers_PROFIT_LOSS_STATEMENT_Item[] Items_OPERATINGEXPENSES
        {
            get
            {
                return Items == null ? new Step_BalanceAndOthers_PROFIT_LOSS_STATEMENT_Item[0] : Items.Where(c => c.GroupName == GROUP_OPERATINGEXPENSES).ToArray();
            }
            set { }
        }
      
      

        #region GROUP_INCOME_Total
        public double GROUP_INCOME_Total_Year1
        {
            get { return Items_INCOME.Sum(c => c.Year1); }
        }
        public double GROUP_INCOME_Total_Year2
        {
            get { return Items_INCOME.Sum(c => c.Year2); }
        }
        public double GROUP_INCOME_Total_Year3
        {
            get { return Items_INCOME.Sum(c => c.Year3); }
        }
        public double GROUP_INCOME_Total_Year4
        {
            get { return Items_INCOME.Sum(c => c.Year4); }
        }
        public double GROUP_INCOME_Total_Year5
        {
            get { return Items_INCOME.Sum(c => c.Year5); }
        }
        #endregion

        #region GROUP_COSTS_Total
        public double GROUP_COSTS_Total_Year1
        {
            get { return Items_COSTS .Sum(c => c.Year1); }
        }
        public double GROUP_COSTS_Total_Year2
        {
            get { return Items_COSTS .Sum(c => c.Year2); }
        }
        public double GROUP_COSTS_Total_Year3
        {
            get { return Items_COSTS .Sum(c => c.Year3); }
        }
        public double GROUP_COSTS_Total_Year4
        {
            get { return Items_COSTS .Sum(c => c.Year4); }
        }
        public double GROUP_COSTS_Total_Year5
        {
            get { return Items_COSTS .Sum(c => c.Year5); }
        }
        #endregion

        #region GROUP_OPERATINGEXPENSES_Total
        public double GROUP_OPERATINGEXPENSES_Total_Year1
        {
            get { return Items_OPERATINGEXPENSES.Sum(c => c.Year1); }
        }
        public double GROUP_OPERATINGEXPENSES_Total_Year2
        {
            get { return Items_OPERATINGEXPENSES.Sum(c => c.Year2); }
        }
        public double GROUP_OPERATINGEXPENSES_Total_Year3
        {
            get { return Items_OPERATINGEXPENSES.Sum(c => c.Year3); }
        }
        public double GROUP_OPERATINGEXPENSES_Total_Year4
        {
            get { return Items_OPERATINGEXPENSES.Sum(c => c.Year4); }
        }
        public double GROUP_OPERATINGEXPENSES_Total_Year5
        {
            get { return Items_OPERATINGEXPENSES.Sum(c => c.Year5); }
        }
        #endregion
        
        #region GROSS CASH FLOW
        public double GROUP_GROSSPROFIT_Total_Year1
        {
            get { return GROUP_INCOME_Total_Year1 - GROUP_COSTS_Total_Year1; }
        }
        public double GROUP_GROSSPROFIT_Total_Year2
        {
            get { return GROUP_INCOME_Total_Year2 - GROUP_COSTS_Total_Year2; }
        }
        public double GROUP_GROSSPROFIT_Total_Year3
        {
            get { return GROUP_INCOME_Total_Year3 - GROUP_COSTS_Total_Year3; }
        }
        public double GROUP_GROSSPROFIT_Total_Year4
        {
            get { return GROUP_INCOME_Total_Year4 - GROUP_COSTS_Total_Year4; }
        }
        public double GROUP_GROSSPROFIT_Total_Year5
        {
            get { return GROUP_INCOME_Total_Year5 - GROUP_COSTS_Total_Year5; }
        }
        #endregion

        #region NET CASH FLOW
        public double GROUP_NETPROFITLOSS_Total_Year1
        {
            get { return GROUP_GROSSPROFIT_Total_Year1 - GROUP_OPERATINGEXPENSES_Total_Year1 ; }
        }
        public double GROUP_NETPROFITLOSS_Total_Year2
        {
            get { return GROUP_GROSSPROFIT_Total_Year2 - GROUP_OPERATINGEXPENSES_Total_Year2 ; }
        }
        public double GROUP_NETPROFITLOSS_Total_Year3
        {
            get { return GROUP_GROSSPROFIT_Total_Year3 - GROUP_OPERATINGEXPENSES_Total_Year3 ; }
        }
        public double GROUP_NETPROFITLOSS_Total_Year4
        {
            get { return GROUP_GROSSPROFIT_Total_Year4 - GROUP_OPERATINGEXPENSES_Total_Year4 ; }
        }
        public double GROUP_NETPROFITLOSS_Total_Year5
        {
            get { return GROUP_GROSSPROFIT_Total_Year5 - GROUP_OPERATINGEXPENSES_Total_Year5 ; }
        }
        #endregion
    
        public string GROUP_INCOME
        {
            get { return "INCOME"; }
        }
        public string GROUP_COSTS 
        {
            get { return "COSTS"; }
        }
        public string GROUP_OPERATINGEXPENSES
        {
            get { return "OPERATINGEXPENSES"; }
        }        
        public void SendPropertyChanged_Total()
        {
            SendPropertyChanged("GROUP_INCOME_Total_Year1");
            SendPropertyChanged("GROUP_INCOME_Total_Year2");
            SendPropertyChanged("GROUP_INCOME_Total_Year3");
            SendPropertyChanged("GROUP_INCOME_Total_Year4");
            SendPropertyChanged("GROUP_INCOME_Total_Year5");

            SendPropertyChanged("GROUP_COSTS_Total_Year1");
            SendPropertyChanged("GROUP_COSTS_Total_Year2");
            SendPropertyChanged("GROUP_COSTS_Total_Year3");
            SendPropertyChanged("GROUP_COSTS_Total_Year4");
            SendPropertyChanged("GROUP_COSTS_Total_Year5");

            SendPropertyChanged("GROUP_OPERATINGEXPENSES_Total_Year1");
            SendPropertyChanged("GROUP_OPERATINGEXPENSES_Total_Year2");
            SendPropertyChanged("GROUP_OPERATINGEXPENSES_Total_Year3");
            SendPropertyChanged("GROUP_OPERATINGEXPENSES_Total_Year4");
            SendPropertyChanged("GROUP_OPERATINGEXPENSES_Total_Year5");

            SendPropertyChanged("GROUP_GROSSPROFIT_Total_Year1");
            SendPropertyChanged("GROUP_GROSSPROFIT_Total_Year2");
            SendPropertyChanged("GROUP_GROSSPROFIT_Total_Year3");
            SendPropertyChanged("GROUP_GROSSPROFIT_Total_Year4");
            SendPropertyChanged("GROUP_GROSSPROFIT_Total_Year5");

            SendPropertyChanged("GROUP_NETPROFITLOSS_Total_Year1");
            SendPropertyChanged("GROUP_NETPROFITLOSS_Total_Year2");
            SendPropertyChanged("GROUP_NETPROFITLOSS_Total_Year3");
            SendPropertyChanged("GROUP_NETPROFITLOSS_Total_Year4");
            SendPropertyChanged("GROUP_NETPROFITLOSS_Total_Year5");


        }
        #endregion

        #region Add
        public void AddNew(string group)
        {
            Step_BalanceAndOthers_PROFIT_LOSS_STATEMENT_Item newItem = new Step_BalanceAndOthers_PROFIT_LOSS_STATEMENT_Item(this)
            {
                GroupName = group,
            };
            if (Items == null)
                Items = new List<Step_BalanceAndOthers_PROFIT_LOSS_STATEMENT_Item>();
            Items.Add(newItem);
        }
        public void AddNew(string group, string name)
        {
            Step_BalanceAndOthers_PROFIT_LOSS_STATEMENT_Item newItem = new Step_BalanceAndOthers_PROFIT_LOSS_STATEMENT_Item(this)
            {
                GroupName = group,
                Name = name
            };
            if (Items == null)
                Items = new List<Step_BalanceAndOthers_PROFIT_LOSS_STATEMENT_Item>();
            Items.Add(newItem);
        }
        public void AddNew(string group, bool just1InGrp)
        {
            Step_BalanceAndOthers_PROFIT_LOSS_STATEMENT_Item newItem = new Step_BalanceAndOthers_PROFIT_LOSS_STATEMENT_Item(this)
            {
                GroupName = group,
                Name = just1InGrp == true ? group : string.Empty
            };
            if (Items == null)
                Items = new List<Step_BalanceAndOthers_PROFIT_LOSS_STATEMENT_Item>();
            Items.Add(newItem);
        }
        public void Remove(Step_BalanceAndOthers_PROFIT_LOSS_STATEMENT_Item removeItem)
        {
            var grps = this.Items.Where(c => c.GroupName == removeItem.GroupName);
            if (grps.Count() == 1)
            {
                removeItem.Name = string.Empty;
                removeItem.Year1 = 0;
                removeItem.Year2 = 0;
                removeItem.Year3 = 0;
                removeItem.Year4 = 0;
                removeItem.Year5 = 0;

            }
            else
            {
                this.Items.Remove(removeItem);
            }
        }
        #endregion

        #region CurrencySymbol
        [DataMember]
        string _CurrencySymbol = string.Empty;
        public string CurrencySymbol
        {
            get { return _CurrencySymbol; }
            set
            {
                if (_CurrencySymbol != value)
                {
                    _CurrencySymbol = value;
                    SendPropertyChanged("CurrencySymbol");
                }
            }
        }
        #endregion

        #region CurrencySymbol_UI
        [DataMember]
        string _CurrencySymbol_UI = "Currency Symbol";
        public string CurrencySymbol_UI
        {
            get { return _CurrencySymbol_UI; }
            set
            {
                if (_CurrencySymbol_UI != value)
                {
                    _CurrencySymbol_UI = value;
                    SendPropertyChanged("CurrencySymbol_UI");
                }
            }
        }
        #endregion
    }
    [DataContract]
    public class Step_BalanceAndOthers_PROFIT_LOSS_STATEMENT_Item : INotifyPropertyChanged
    {
        Step_BalanceAndOthers_PROFIT_LOSS_STATEMENT _Parent;
        public Step_BalanceAndOthers_PROFIT_LOSS_STATEMENT Parent
        {
            get { return _Parent; }
            set
            {
                if (value != _Parent)
                {
                    _Parent = value;
                    this.PropertyChanged -= new PropertyChangedEventHandler(Step_BalanceAndOthers_PROFIT_LOSS_STATEMENT_Item_PropertyChanged);
                    this.PropertyChanged += new PropertyChangedEventHandler(Step_BalanceAndOthers_PROFIT_LOSS_STATEMENT_Item_PropertyChanged);
                }
            }
        }
        public Step_BalanceAndOthers_PROFIT_LOSS_STATEMENT_Item(Step_BalanceAndOthers_PROFIT_LOSS_STATEMENT parent)
        {
            Parent = parent;
        }

        void Step_BalanceAndOthers_PROFIT_LOSS_STATEMENT_Item_PropertyChanged(object sender, PropertyChangedEventArgs e)
        {
            if (Parent != null)
                Parent.SendPropertyChanged_Total();
        }

        #region INotifyPropertyChanged Members
        public void SendPropertyChanged(string sProp)
        {
            if (PropertyChanged != null)
                PropertyChanged(this, new PropertyChangedEventArgs(sProp));
        }
        public event PropertyChangedEventHandler PropertyChanged;
        #endregion

        #region Data
        #region GroupName
        [DataMember]
        string _GroupName = string.Empty;
        public string GroupName
        {
            get
            {
                return _GroupName;
            }
            set
            {
                if (_GroupName != value)
                {
                    _GroupName = value;
                    SendPropertyChanged("GroupName");
                }
            }
        }
        #endregion

        #region Name
        [DataMember]
        string _Name = string.Empty;
        public string Name
        {
            get
            {
                return _Name;
            }
            set
            {
                if (_Name != value)
                {
                    _Name = value;
                    SendPropertyChanged("Name");
                }
            }
        }
        #endregion

        #region Year1
        [DataMember]
        double _Year1 = 0;
        public double Year1
        {
            get
            {
                return _Year1;
            }
            set
            {
                if (_Year1 != value)
                {
                    _Year1 = value;
                    SendPropertyChanged("Year1");
                }
            }
        }
        #endregion

        #region Year2
        [DataMember]
        double _Year2 = 0;
        public double Year2
        {
            get
            {
                return _Year2;
            }
            set
            {
                if (_Year2 != value)
                {
                    _Year2 = value;
                    SendPropertyChanged("Year2");
                }
            }
        }
        #endregion

        #region Year3
        [DataMember]
        double _Year3 = 0;
        public double Year3
        {
            get
            {
                return _Year3;
            }
            set
            {
                if (_Year3 != value)
                {
                    _Year3 = value;
                    SendPropertyChanged("Year3");
                }
            }
        }
        #endregion

        #region Year4
        [DataMember]
        double _Year4 = 0;
        public double Year4
        {
            get
            {
                return _Year4;
            }
            set
            {
                if (_Year4 != value)
                {
                    _Year4 = value;
                    SendPropertyChanged("Year4");
                }
            }
        }
        #endregion

        #region Year5
        [DataMember]
        double _Year5 = 0;
        public double Year5
        {
            get
            {
                return _Year5;
            }
            set
            {
                if (_Year5 != value)
                {
                    _Year5 = value;
                    SendPropertyChanged("Year5");
                }
            }
        }
        #endregion
        #endregion

        #region CurrencySymbol
        [DataMember]
        string _CurrencySymbol = string.Empty;
        public string CurrencySymbol
        {
            get { return _CurrencySymbol; }
            set
            {
                if (_CurrencySymbol != value)
                {
                    _CurrencySymbol = value;
                    SendPropertyChanged("CurrencySymbol");
                }
            }
        }
        #endregion

        #region CurrencySymbol_UI
        [DataMember]
        string _CurrencySymbol_UI = "Currency Symbol";
        public string CurrencySymbol_UI
        {
            get { return _CurrencySymbol_UI; }
            set
            {
                if (_CurrencySymbol_UI != value)
                {
                    _CurrencySymbol_UI = value;
                    SendPropertyChanged("CurrencySymbol_UI");
                }
            }
        }
        #endregion
    }

}
